package com.hzhc.service;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzhc.dto.UserDto;
import com.hzhc.entity.CntrInfo;
import com.hzhc.utils.ResultUtil;
import com.hzhc.vo.CarInfoVo;
import com.hzhc.vo.CntrInfoVo;
import com.hzhc.vo.CntrStatisticsVo;
import com.hzhc.vo.CntrTallyVo;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 集装箱信息 服务类
 * </p>
 *
 * @author 功不唐捐
 * @since 2024-05-23
 */
public interface CntrInfoService extends IService<CntrInfo> {

    List<CntrInfoVo> getAllList(Page<CntrInfoVo> page, CntrInfoVo vo);

    List<CntrInfoVo> getAllYzsList(Page<CntrInfoVo> page, CntrInfoVo vo);

    ResultUtil<T> addCntrInfo(CntrInfo info);

    Boolean checkCntrNo(CntrInfo info);

    ResultUtil<T> checkBay(CntrInfo info);
    ResultUtil<T> checkOldBay(CntrInfo info);

    ResultUtil<T> updateCntrInfo(CntrInfo info);

    ResultUtil<T> delCntrInfo(String cntrNo);

    JSONObject getCntrBayInfo(CntrInfo cntrInfo);

    List<String> getBayInfoBayArea(String area);

    List<CntrInfoVo> getCntrInfoAll(CntrInfoVo vo);

    List<CntrInfoVo> selectCntrBybay(String bay);

    ResultUtil<T> cntrDuiTally(CntrTallyVo vo);

    List<CntrInfo> getIpadZcCntrInfoByBay(CntrInfoVo vo);

    List<CntrInfo> getIpadgetAllCntr(String cntrNo);

    List<CntrInfo> getAfter(String after);

    List<CntrInfo> getBefore(String before);

    ResultUtil<T> cntrMoveBay(CntrTallyVo cntrTallyVo);

    CntrInfo getByCntrNo(String cntrNo);

    ResultUtil<T> cntrXcTally(CntrTallyVo vo);

    List<CntrStatisticsVo> getComCntrList(CntrStatisticsVo vo);

    void exportComCntr(HttpServletRequest request, HttpServletResponse response, CntrStatisticsVo vo);

    List<JSONObject> getZcEfCountCensus();

    List<JSONObject> getZcSizeCensus();

    List<CntrInfo> getOnRoadList(CntrInfoVo vo);

    JSONObject getYardCntrStatistic(CntrInfo cntrInfo);

    List<CntrInfoVo> getAppCntrList(Page<CntrInfoVo> page, CntrInfoVo vo);

    Map<String, Object> dataCntrAnaly();

    List<CntrInfoVo> getLockCntrList();

    ResultUtil<T> lockCntr(List<CntrInfo> vo,String lockRemark);

    ResultUtil<T> unLockCntr(List<CntrInfo> cntrList);

    List<CntrInfo> getSgjYwCntrList( CarInfoVo vo);

    JSONObject getCntrInfo(CntrInfo info);

    ResultUtil<T> cntrXcTallyZt(CntrTallyVo vo);

    List<CntrInfoVo> getZzCntrInfoAll(CntrInfoVo vo);

    void exportFile(HttpServletRequest request, HttpServletResponse response, String exportExcelPath, String exportExcelPath1,Integer flag);
    void exportChePiFile(HttpServletRequest request, HttpServletResponse response, String exportExcelPath);

    ResultUtil<List<CntrInfoVo>> cntrUpload(Integer flag,UserDto user, MultipartFile file);
    ResultUtil<List<CntrInfoVo>> chepiUpload(UserDto user, MultipartFile file);

    ResultUtil<T> importCntrList(HttpServletRequest request, List<CntrInfo> cntrList);

    ResultUtil<T> updateConsigneeMsg(CntrInfoVo vo);

    ResultUtil<T> importSgjCntrList(HttpServletRequest request, List<CntrInfo> cntrList);

    JSONObject getIpadCntrInfo(CntrInfo cntrInfo);

    List<CntrInfoVo> getCntrB(CntrInfoVo vo);

    ResultUtil<T> changeLhWeight(CntrInfoVo cntrInfoVo);

    ResultUtil<T> addTxCntr(CntrInfoVo cntrInfoVo);

    List<CntrInfo> getOnAreaCntrList();
}
